// 引入模块 koa
const Koa = require('koa')
// 引入 koa-static-cache
const StaticCache = require('koa-static-cache')
// 引入路由 koa-router ,直接调用
const router = require('koa-router')()
// 引入处理post请求体的中间件 koa-body
const KoaBody = require('koa-body')

// 引入模板引擎 koa-views  依赖于 nunjucks
const views = require('koa-views')

// 创建web服务对象
const app = new Koa()

// 创建静态资源服务 
app.use(StaticCache({
  // url 中的前缀
  prefix: '/public',
  // url 对应的静态资源存放目录
  dir: './public',
  // 启用 gzip 传输压缩
  gzip: true,
  // 监听静态资源文件变化
  dynamic: true
}))
// 配置内容解析
app.use(KoaBody())

// 配置模板引擎
app.use(views("./template", {
  // 关系映射
  map: {
    // nunjucks 官网 推荐使用 .njk
    "html": "nunjucks"
  }
}))

let user = {}

// 配置首页路由
router.get("/", async ctx => {
  // 渲染模板
  await ctx.render("index", {
    user: {
      username: "小吴",
    }
  })
})
router.get("/admin", async ctx => {
  if (!user) {
    // 重定向
    ctx.redirect("/")
  } else {
    ctx.body = "欢迎嘻嘻嘻"
  }
})


// 路由注册 放到中间件中
app.use(router.routes())

// 监听 
app.listen(8080, () => {
  console.log("run on port 8080")
})
